{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ideias:\n",
    "\n",
    "* Algoritmos tree-based:\n",
    "  * Criar modelo simples LightGBM com todas as features normalmente\n",
    "  * Features categoricas:\n",
    "    * Fazer target mean\n",
    "    * Combinar features categoricas (principalmente as com poucos valores unicos)\n",
    "\n",
    "* Algoritmos lineares:\n",
    "  * Escalar dados que nao são categoricos\n",
    "  * Fazer OneHotEncoding em dados que são categoricos\n",
    "  * Eliminar NaNs\n",
    "  * Colocar leafs dos algoritmos tree-based\n",
    "\n",
    "* Ideias de extração de mais features:\n",
    "  * WALLSMATERIAL_MODE é separado por virgulas, verificar valores e criar features categoricas do mesmo\n",
    "  * Extrair unidade de anos nas features (DAYS_BIRTH, DAYS_EMPLOYED, DAYS_REGISTRATION, DAYS_ID_PUBLISH)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "sns.set_style('whitegrid')\n",
    "%matplotlib inline\n",
    "\n",
    "import pandas as pd\n",
    "pd.set_option('display.max_rows', 500)\n",
    "pd.set_option('display.max_columns', 500)\n",
    "pd.set_option('display.width', 1000)\n",
    "\n",
    "from data import *\n",
    "from charts import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SK_ID_CURR</th>\n",
       "      <th>TARGET</th>\n",
       "      <th>NAME_CONTRACT_TYPE</th>\n",
       "      <th>CODE_GENDER</th>\n",
       "      <th>FLAG_OWN_CAR</th>\n",
       "      <th>FLAG_OWN_REALTY</th>\n",
       "      <th>CNT_CHILDREN</th>\n",
       "      <th>AMT_INCOME_TOTAL</th>\n",
       "      <th>AMT_CREDIT</th>\n",
       "      <th>AMT_ANNUITY</th>\n",
       "      <th>AMT_GOODS_PRICE</th>\n",
       "      <th>NAME_TYPE_SUITE</th>\n",
       "      <th>NAME_INCOME_TYPE</th>\n",
       "      <th>NAME_EDUCATION_TYPE</th>\n",
       "      <th>NAME_FAMILY_STATUS</th>\n",
       "      <th>NAME_HOUSING_TYPE</th>\n",
       "      <th>REGION_POPULATION_RELATIVE</th>\n",
       "      <th>DAYS_BIRTH</th>\n",
       "      <th>DAYS_EMPLOYED</th>\n",
       "      <th>DAYS_REGISTRATION</th>\n",
       "      <th>DAYS_ID_PUBLISH</th>\n",
       "      <th>OWN_CAR_AGE</th>\n",
       "      <th>FLAG_MOBIL</th>\n",
       "      <th>FLAG_EMP_PHONE</th>\n",
       "      <th>FLAG_WORK_PHONE</th>\n",
       "      <th>FLAG_CONT_MOBILE</th>\n",
       "      <th>FLAG_PHONE</th>\n",
       "      <th>FLAG_EMAIL</th>\n",
       "      <th>OCCUPATION_TYPE</th>\n",
       "      <th>CNT_FAM_MEMBERS</th>\n",
       "      <th>REGION_RATING_CLIENT</th>\n",
       "      <th>REGION_RATING_CLIENT_W_CITY</th>\n",
       "      <th>WEEKDAY_APPR_PROCESS_START</th>\n",
       "      <th>HOUR_APPR_PROCESS_START</th>\n",
       "      <th>REG_REGION_NOT_LIVE_REGION</th>\n",
       "      <th>REG_REGION_NOT_WORK_REGION</th>\n",
       "      <th>LIVE_REGION_NOT_WORK_REGION</th>\n",
       "      <th>REG_CITY_NOT_LIVE_CITY</th>\n",
       "      <th>REG_CITY_NOT_WORK_CITY</th>\n",
       "      <th>LIVE_CITY_NOT_WORK_CITY</th>\n",
       "      <th>ORGANIZATION_TYPE</th>\n",
       "      <th>EXT_SOURCE_1</th>\n",
       "      <th>EXT_SOURCE_2</th>\n",
       "      <th>EXT_SOURCE_3</th>\n",
       "      <th>APARTMENTS_AVG</th>\n",
       "      <th>BASEMENTAREA_AVG</th>\n",
       "      <th>YEARS_BEGINEXPLUATATION_AVG</th>\n",
       "      <th>YEARS_BUILD_AVG</th>\n",
       "      <th>COMMONAREA_AVG</th>\n",
       "      <th>ELEVATORS_AVG</th>\n",
       "      <th>ENTRANCES_AVG</th>\n",
       "      <th>FLOORSMAX_AVG</th>\n",
       "      <th>FLOORSMIN_AVG</th>\n",
       "      <th>LANDAREA_AVG</th>\n",
       "      <th>LIVINGAPARTMENTS_AVG</th>\n",
       "      <th>LIVINGAREA_AVG</th>\n",
       "      <th>NONLIVINGAPARTMENTS_AVG</th>\n",
       "      <th>NONLIVINGAREA_AVG</th>\n",
       "      <th>APARTMENTS_MODE</th>\n",
       "      <th>BASEMENTAREA_MODE</th>\n",
       "      <th>YEARS_BEGINEXPLUATATION_MODE</th>\n",
       "      <th>YEARS_BUILD_MODE</th>\n",
       "      <th>COMMONAREA_MODE</th>\n",
       "      <th>ELEVATORS_MODE</th>\n",
       "      <th>ENTRANCES_MODE</th>\n",
       "      <th>FLOORSMAX_MODE</th>\n",
       "      <th>FLOORSMIN_MODE</th>\n",
       "      <th>LANDAREA_MODE</th>\n",
       "      <th>LIVINGAPARTMENTS_MODE</th>\n",
       "      <th>LIVINGAREA_MODE</th>\n",
       "      <th>NONLIVINGAPARTMENTS_MODE</th>\n",
       "      <th>NONLIVINGAREA_MODE</th>\n",
       "      <th>APARTMENTS_MEDI</th>\n",
       "      <th>BASEMENTAREA_MEDI</th>\n",
       "      <th>YEARS_BEGINEXPLUATATION_MEDI</th>\n",
       "      <th>YEARS_BUILD_MEDI</th>\n",
       "      <th>COMMONAREA_MEDI</th>\n",
       "      <th>ELEVATORS_MEDI</th>\n",
       "      <th>ENTRANCES_MEDI</th>\n",
       "      <th>FLOORSMAX_MEDI</th>\n",
       "      <th>FLOORSMIN_MEDI</th>\n",
       "      <th>LANDAREA_MEDI</th>\n",
       "      <th>LIVINGAPARTMENTS_MEDI</th>\n",
       "      <th>LIVINGAREA_MEDI</th>\n",
       "      <th>NONLIVINGAPARTMENTS_MEDI</th>\n",
       "      <th>NONLIVINGAREA_MEDI</th>\n",
       "      <th>FONDKAPREMONT_MODE</th>\n",
       "      <th>HOUSETYPE_MODE</th>\n",
       "      <th>TOTALAREA_MODE</th>\n",
       "      <th>WALLSMATERIAL_MODE</th>\n",
       "      <th>EMERGENCYSTATE_MODE</th>\n",
       "      <th>OBS_30_CNT_SOCIAL_CIRCLE</th>\n",
       "      <th>DEF_30_CNT_SOCIAL_CIRCLE</th>\n",
       "      <th>OBS_60_CNT_SOCIAL_CIRCLE</th>\n",
       "      <th>DEF_60_CNT_SOCIAL_CIRCLE</th>\n",
       "      <th>DAYS_LAST_PHONE_CHANGE</th>\n",
       "      <th>FLAG_DOCUMENT_2</th>\n",
       "      <th>FLAG_DOCUMENT_3</th>\n",
       "      <th>FLAG_DOCUMENT_4</th>\n",
       "      <th>FLAG_DOCUMENT_5</th>\n",
       "      <th>FLAG_DOCUMENT_6</th>\n",
       "      <th>FLAG_DOCUMENT_7</th>\n",
       "      <th>FLAG_DOCUMENT_8</th>\n",
       "      <th>FLAG_DOCUMENT_9</th>\n",
       "      <th>FLAG_DOCUMENT_10</th>\n",
       "      <th>FLAG_DOCUMENT_11</th>\n",
       "      <th>FLAG_DOCUMENT_12</th>\n",
       "      <th>FLAG_DOCUMENT_13</th>\n",
       "      <th>FLAG_DOCUMENT_14</th>\n",
       "      <th>FLAG_DOCUMENT_15</th>\n",
       "      <th>FLAG_DOCUMENT_16</th>\n",
       "      <th>FLAG_DOCUMENT_17</th>\n",
       "      <th>FLAG_DOCUMENT_18</th>\n",
       "      <th>FLAG_DOCUMENT_19</th>\n",
       "      <th>FLAG_DOCUMENT_20</th>\n",
       "      <th>FLAG_DOCUMENT_21</th>\n",
       "      <th>AMT_REQ_CREDIT_BUREAU_HOUR</th>\n",
       "      <th>AMT_REQ_CREDIT_BUREAU_DAY</th>\n",
       "      <th>AMT_REQ_CREDIT_BUREAU_WEEK</th>\n",
       "      <th>AMT_REQ_CREDIT_BUREAU_MON</th>\n",
       "      <th>AMT_REQ_CREDIT_BUREAU_QRT</th>\n",
       "      <th>AMT_REQ_CREDIT_BUREAU_YEAR</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100002</td>\n",
       "      <td>1</td>\n",
       "      <td>Cash loans</td>\n",
       "      <td>M</td>\n",
       "      <td>N</td>\n",
       "      <td>Y</td>\n",
       "      <td>0</td>\n",
       "      <td>202500.0</td>\n",
       "      <td>406597.5</td>\n",
       "      <td>24700.5</td>\n",
       "      <td>351000.0</td>\n",
       "      <td>Unaccompanied</td>\n",
       "      <td>Working</td>\n",
       "      <td>Secondary / secondary special</td>\n",
       "      <td>Single / not married</td>\n",
       "      <td>House / apartment</td>\n",
       "      <td>0.018801</td>\n",
       "      <td>-9461</td>\n",
       "      <td>-637</td>\n",
       "      <td>-3648.0</td>\n",
       "      <td>-2120</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Laborers</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>WEDNESDAY</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Business Entity Type 3</td>\n",
       "      <td>0.083037</td>\n",
       "      <td>0.262949</td>\n",
       "      <td>0.139376</td>\n",
       "      <td>0.0247</td>\n",
       "      <td>0.0369</td>\n",
       "      <td>0.9722</td>\n",
       "      <td>0.6192</td>\n",
       "      <td>0.0143</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0690</td>\n",
       "      <td>0.0833</td>\n",
       "      <td>0.1250</td>\n",
       "      <td>0.0369</td>\n",
       "      <td>0.0202</td>\n",
       "      <td>0.0190</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0252</td>\n",
       "      <td>0.0383</td>\n",
       "      <td>0.9722</td>\n",
       "      <td>0.6341</td>\n",
       "      <td>0.0144</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0690</td>\n",
       "      <td>0.0833</td>\n",
       "      <td>0.1250</td>\n",
       "      <td>0.0377</td>\n",
       "      <td>0.022</td>\n",
       "      <td>0.0198</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0250</td>\n",
       "      <td>0.0369</td>\n",
       "      <td>0.9722</td>\n",
       "      <td>0.6243</td>\n",
       "      <td>0.0144</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0690</td>\n",
       "      <td>0.0833</td>\n",
       "      <td>0.1250</td>\n",
       "      <td>0.0375</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0193</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>reg oper account</td>\n",
       "      <td>block of flats</td>\n",
       "      <td>0.0149</td>\n",
       "      <td>Stone, brick</td>\n",
       "      <td>No</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>-1134.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>100003</td>\n",
       "      <td>0</td>\n",
       "      <td>Cash loans</td>\n",
       "      <td>F</td>\n",
       "      <td>N</td>\n",
       "      <td>N</td>\n",
       "      <td>0</td>\n",
       "      <td>270000.0</td>\n",
       "      <td>1293502.5</td>\n",
       "      <td>35698.5</td>\n",
       "      <td>1129500.0</td>\n",
       "      <td>Family</td>\n",
       "      <td>State servant</td>\n",
       "      <td>Higher education</td>\n",
       "      <td>Married</td>\n",
       "      <td>House / apartment</td>\n",
       "      <td>0.003541</td>\n",
       "      <td>-16765</td>\n",
       "      <td>-1188</td>\n",
       "      <td>-1186.0</td>\n",
       "      <td>-291</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Core staff</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>MONDAY</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>School</td>\n",
       "      <td>0.311267</td>\n",
       "      <td>0.622246</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0959</td>\n",
       "      <td>0.0529</td>\n",
       "      <td>0.9851</td>\n",
       "      <td>0.7960</td>\n",
       "      <td>0.0605</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.0345</td>\n",
       "      <td>0.2917</td>\n",
       "      <td>0.3333</td>\n",
       "      <td>0.0130</td>\n",
       "      <td>0.0773</td>\n",
       "      <td>0.0549</td>\n",
       "      <td>0.0039</td>\n",
       "      <td>0.0098</td>\n",
       "      <td>0.0924</td>\n",
       "      <td>0.0538</td>\n",
       "      <td>0.9851</td>\n",
       "      <td>0.8040</td>\n",
       "      <td>0.0497</td>\n",
       "      <td>0.0806</td>\n",
       "      <td>0.0345</td>\n",
       "      <td>0.2917</td>\n",
       "      <td>0.3333</td>\n",
       "      <td>0.0128</td>\n",
       "      <td>0.079</td>\n",
       "      <td>0.0554</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0968</td>\n",
       "      <td>0.0529</td>\n",
       "      <td>0.9851</td>\n",
       "      <td>0.7987</td>\n",
       "      <td>0.0608</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.0345</td>\n",
       "      <td>0.2917</td>\n",
       "      <td>0.3333</td>\n",
       "      <td>0.0132</td>\n",
       "      <td>0.0787</td>\n",
       "      <td>0.0558</td>\n",
       "      <td>0.0039</td>\n",
       "      <td>0.01</td>\n",
       "      <td>reg oper account</td>\n",
       "      <td>block of flats</td>\n",
       "      <td>0.0714</td>\n",
       "      <td>Block</td>\n",
       "      <td>No</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-828.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100004</td>\n",
       "      <td>0</td>\n",
       "      <td>Revolving loans</td>\n",
       "      <td>M</td>\n",
       "      <td>Y</td>\n",
       "      <td>Y</td>\n",
       "      <td>0</td>\n",
       "      <td>67500.0</td>\n",
       "      <td>135000.0</td>\n",
       "      <td>6750.0</td>\n",
       "      <td>135000.0</td>\n",
       "      <td>Unaccompanied</td>\n",
       "      <td>Working</td>\n",
       "      <td>Secondary / secondary special</td>\n",
       "      <td>Single / not married</td>\n",
       "      <td>House / apartment</td>\n",
       "      <td>0.010032</td>\n",
       "      <td>-19046</td>\n",
       "      <td>-225</td>\n",
       "      <td>-4260.0</td>\n",
       "      <td>-2531</td>\n",
       "      <td>26.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Laborers</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>MONDAY</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Government</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.555912</td>\n",
       "      <td>0.729567</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-815.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>100006</td>\n",
       "      <td>0</td>\n",
       "      <td>Cash loans</td>\n",
       "      <td>F</td>\n",
       "      <td>N</td>\n",
       "      <td>Y</td>\n",
       "      <td>0</td>\n",
       "      <td>135000.0</td>\n",
       "      <td>312682.5</td>\n",
       "      <td>29686.5</td>\n",
       "      <td>297000.0</td>\n",
       "      <td>Unaccompanied</td>\n",
       "      <td>Working</td>\n",
       "      <td>Secondary / secondary special</td>\n",
       "      <td>Civil marriage</td>\n",
       "      <td>House / apartment</td>\n",
       "      <td>0.008019</td>\n",
       "      <td>-19005</td>\n",
       "      <td>-3039</td>\n",
       "      <td>-9833.0</td>\n",
       "      <td>-2437</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Laborers</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>WEDNESDAY</td>\n",
       "      <td>17</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Business Entity Type 3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.650442</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-617.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100007</td>\n",
       "      <td>0</td>\n",
       "      <td>Cash loans</td>\n",
       "      <td>M</td>\n",
       "      <td>N</td>\n",
       "      <td>Y</td>\n",
       "      <td>0</td>\n",
       "      <td>121500.0</td>\n",
       "      <td>513000.0</td>\n",
       "      <td>21865.5</td>\n",
       "      <td>513000.0</td>\n",
       "      <td>Unaccompanied</td>\n",
       "      <td>Working</td>\n",
       "      <td>Secondary / secondary special</td>\n",
       "      <td>Single / not married</td>\n",
       "      <td>House / apartment</td>\n",
       "      <td>0.028663</td>\n",
       "      <td>-19932</td>\n",
       "      <td>-3038</td>\n",
       "      <td>-4311.0</td>\n",
       "      <td>-3458</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>Core staff</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>THURSDAY</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Religion</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.322738</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1106.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   SK_ID_CURR  TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR FLAG_OWN_REALTY  CNT_CHILDREN  AMT_INCOME_TOTAL  AMT_CREDIT  AMT_ANNUITY  AMT_GOODS_PRICE NAME_TYPE_SUITE NAME_INCOME_TYPE            NAME_EDUCATION_TYPE    NAME_FAMILY_STATUS  NAME_HOUSING_TYPE  REGION_POPULATION_RELATIVE  DAYS_BIRTH  DAYS_EMPLOYED  DAYS_REGISTRATION  DAYS_ID_PUBLISH  OWN_CAR_AGE  FLAG_MOBIL  FLAG_EMP_PHONE  FLAG_WORK_PHONE  FLAG_CONT_MOBILE  FLAG_PHONE  FLAG_EMAIL OCCUPATION_TYPE  CNT_FAM_MEMBERS  REGION_RATING_CLIENT  REGION_RATING_CLIENT_W_CITY WEEKDAY_APPR_PROCESS_START  HOUR_APPR_PROCESS_START  REG_REGION_NOT_LIVE_REGION  REG_REGION_NOT_WORK_REGION  LIVE_REGION_NOT_WORK_REGION  REG_CITY_NOT_LIVE_CITY  REG_CITY_NOT_WORK_CITY  LIVE_CITY_NOT_WORK_CITY       ORGANIZATION_TYPE  EXT_SOURCE_1  EXT_SOURCE_2  EXT_SOURCE_3  APARTMENTS_AVG  BASEMENTAREA_AVG  YEARS_BEGINEXPLUATATION_AVG  YEARS_BUILD_AVG  COMMONAREA_AVG  ELEVATORS_AVG  ENTRANCES_AVG  FLOORSMAX_AVG  FLOORSMIN_AVG  LANDAREA_AVG  \\\n",
       "0      100002       1         Cash loans           M            N               Y             0          202500.0    406597.5      24700.5         351000.0   Unaccompanied          Working  Secondary / secondary special  Single / not married  House / apartment                    0.018801       -9461           -637            -3648.0            -2120          NaN           1               1                0                 1           1           0        Laborers              1.0                     2                            2                  WEDNESDAY                       10                           0                           0                            0                       0                       0                        0  Business Entity Type 3      0.083037      0.262949      0.139376          0.0247            0.0369                       0.9722           0.6192          0.0143           0.00         0.0690         0.0833         0.1250        0.0369   \n",
       "1      100003       0         Cash loans           F            N               N             0          270000.0   1293502.5      35698.5        1129500.0          Family    State servant               Higher education               Married  House / apartment                    0.003541      -16765          -1188            -1186.0             -291          NaN           1               1                0                 1           1           0      Core staff              2.0                     1                            1                     MONDAY                       11                           0                           0                            0                       0                       0                        0                  School      0.311267      0.622246           NaN          0.0959            0.0529                       0.9851           0.7960          0.0605           0.08         0.0345         0.2917         0.3333        0.0130   \n",
       "2      100004       0    Revolving loans           M            Y               Y             0           67500.0    135000.0       6750.0         135000.0   Unaccompanied          Working  Secondary / secondary special  Single / not married  House / apartment                    0.010032      -19046           -225            -4260.0            -2531         26.0           1               1                1                 1           1           0        Laborers              1.0                     2                            2                     MONDAY                        9                           0                           0                            0                       0                       0                        0              Government           NaN      0.555912      0.729567             NaN               NaN                          NaN              NaN             NaN            NaN            NaN            NaN            NaN           NaN   \n",
       "3      100006       0         Cash loans           F            N               Y             0          135000.0    312682.5      29686.5         297000.0   Unaccompanied          Working  Secondary / secondary special        Civil marriage  House / apartment                    0.008019      -19005          -3039            -9833.0            -2437          NaN           1               1                0                 1           0           0        Laborers              2.0                     2                            2                  WEDNESDAY                       17                           0                           0                            0                       0                       0                        0  Business Entity Type 3           NaN      0.650442           NaN             NaN               NaN                          NaN              NaN             NaN            NaN            NaN            NaN            NaN           NaN   \n",
       "4      100007       0         Cash loans           M            N               Y             0          121500.0    513000.0      21865.5         513000.0   Unaccompanied          Working  Secondary / secondary special  Single / not married  House / apartment                    0.028663      -19932          -3038            -4311.0            -3458          NaN           1               1                0                 1           0           0      Core staff              1.0                     2                            2                   THURSDAY                       11                           0                           0                            0                       0                       1                        1                Religion           NaN      0.322738           NaN             NaN               NaN                          NaN              NaN             NaN            NaN            NaN            NaN            NaN           NaN   \n",
       "\n",
       "   LIVINGAPARTMENTS_AVG  LIVINGAREA_AVG  NONLIVINGAPARTMENTS_AVG  NONLIVINGAREA_AVG  APARTMENTS_MODE  BASEMENTAREA_MODE  YEARS_BEGINEXPLUATATION_MODE  YEARS_BUILD_MODE  COMMONAREA_MODE  ELEVATORS_MODE  ENTRANCES_MODE  FLOORSMAX_MODE  FLOORSMIN_MODE  LANDAREA_MODE  LIVINGAPARTMENTS_MODE  LIVINGAREA_MODE  NONLIVINGAPARTMENTS_MODE  NONLIVINGAREA_MODE  APARTMENTS_MEDI  BASEMENTAREA_MEDI  YEARS_BEGINEXPLUATATION_MEDI  YEARS_BUILD_MEDI  COMMONAREA_MEDI  ELEVATORS_MEDI  ENTRANCES_MEDI  FLOORSMAX_MEDI  FLOORSMIN_MEDI  LANDAREA_MEDI  LIVINGAPARTMENTS_MEDI  LIVINGAREA_MEDI  NONLIVINGAPARTMENTS_MEDI  NONLIVINGAREA_MEDI FONDKAPREMONT_MODE  HOUSETYPE_MODE  TOTALAREA_MODE WALLSMATERIAL_MODE EMERGENCYSTATE_MODE  OBS_30_CNT_SOCIAL_CIRCLE  DEF_30_CNT_SOCIAL_CIRCLE  OBS_60_CNT_SOCIAL_CIRCLE  DEF_60_CNT_SOCIAL_CIRCLE  DAYS_LAST_PHONE_CHANGE  FLAG_DOCUMENT_2  FLAG_DOCUMENT_3  FLAG_DOCUMENT_4  FLAG_DOCUMENT_5  FLAG_DOCUMENT_6  FLAG_DOCUMENT_7  FLAG_DOCUMENT_8  FLAG_DOCUMENT_9  FLAG_DOCUMENT_10  \\\n",
       "0                0.0202          0.0190                   0.0000             0.0000           0.0252             0.0383                        0.9722            0.6341           0.0144          0.0000          0.0690          0.0833          0.1250         0.0377                  0.022           0.0198                       0.0                 0.0           0.0250             0.0369                        0.9722            0.6243           0.0144            0.00          0.0690          0.0833          0.1250         0.0375                 0.0205           0.0193                    0.0000                0.00   reg oper account  block of flats          0.0149       Stone, brick                  No                       2.0                       2.0                       2.0                       2.0                 -1134.0                0                1                0                0                0                0                0                0                 0   \n",
       "1                0.0773          0.0549                   0.0039             0.0098           0.0924             0.0538                        0.9851            0.8040           0.0497          0.0806          0.0345          0.2917          0.3333         0.0128                  0.079           0.0554                       0.0                 0.0           0.0968             0.0529                        0.9851            0.7987           0.0608            0.08          0.0345          0.2917          0.3333         0.0132                 0.0787           0.0558                    0.0039                0.01   reg oper account  block of flats          0.0714              Block                  No                       1.0                       0.0                       1.0                       0.0                  -828.0                0                1                0                0                0                0                0                0                 0   \n",
       "2                   NaN             NaN                      NaN                NaN              NaN                NaN                           NaN               NaN              NaN             NaN             NaN             NaN             NaN            NaN                    NaN              NaN                       NaN                 NaN              NaN                NaN                           NaN               NaN              NaN             NaN             NaN             NaN             NaN            NaN                    NaN              NaN                       NaN                 NaN                NaN             NaN             NaN                NaN                 NaN                       0.0                       0.0                       0.0                       0.0                  -815.0                0                0                0                0                0                0                0                0                 0   \n",
       "3                   NaN             NaN                      NaN                NaN              NaN                NaN                           NaN               NaN              NaN             NaN             NaN             NaN             NaN            NaN                    NaN              NaN                       NaN                 NaN              NaN                NaN                           NaN               NaN              NaN             NaN             NaN             NaN             NaN            NaN                    NaN              NaN                       NaN                 NaN                NaN             NaN             NaN                NaN                 NaN                       2.0                       0.0                       2.0                       0.0                  -617.0                0                1                0                0                0                0                0                0                 0   \n",
       "4                   NaN             NaN                      NaN                NaN              NaN                NaN                           NaN               NaN              NaN             NaN             NaN             NaN             NaN            NaN                    NaN              NaN                       NaN                 NaN              NaN                NaN                           NaN               NaN              NaN             NaN             NaN             NaN             NaN            NaN                    NaN              NaN                       NaN                 NaN                NaN             NaN             NaN                NaN                 NaN                       0.0                       0.0                       0.0                       0.0                 -1106.0                0                0                0                0                0                0                1                0                 0   \n",
       "\n",
       "   FLAG_DOCUMENT_11  FLAG_DOCUMENT_12  FLAG_DOCUMENT_13  FLAG_DOCUMENT_14  FLAG_DOCUMENT_15  FLAG_DOCUMENT_16  FLAG_DOCUMENT_17  FLAG_DOCUMENT_18  FLAG_DOCUMENT_19  FLAG_DOCUMENT_20  FLAG_DOCUMENT_21  AMT_REQ_CREDIT_BUREAU_HOUR  AMT_REQ_CREDIT_BUREAU_DAY  AMT_REQ_CREDIT_BUREAU_WEEK  AMT_REQ_CREDIT_BUREAU_MON  AMT_REQ_CREDIT_BUREAU_QRT  AMT_REQ_CREDIT_BUREAU_YEAR  \n",
       "0                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                         0.0                        0.0                         0.0                        0.0                        0.0                         1.0  \n",
       "1                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                         0.0                        0.0                         0.0                        0.0                        0.0                         0.0  \n",
       "2                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                         0.0                        0.0                         0.0                        0.0                        0.0                         0.0  \n",
       "3                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                         NaN                        NaN                         NaN                        NaN                        NaN                         NaN  \n",
       "4                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                 0                         0.0                        0.0                         0.0                        0.0                        0.0                         0.0  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df = pd.read_csv(r'dataset/application_train.csv')\n",
    "train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['SK_ID_CURR', 'TARGET', 'NAME_CONTRACT_TYPE', 'CODE_GENDER',\n",
       "       'FLAG_OWN_CAR', 'FLAG_OWN_REALTY', 'CNT_CHILDREN',\n",
       "       'AMT_INCOME_TOTAL', 'AMT_CREDIT', 'AMT_ANNUITY', 'AMT_GOODS_PRICE',\n",
       "       'NAME_TYPE_SUITE', 'NAME_INCOME_TYPE', 'NAME_EDUCATION_TYPE',\n",
       "       'NAME_FAMILY_STATUS', 'NAME_HOUSING_TYPE',\n",
       "       'REGION_POPULATION_RELATIVE', 'DAYS_BIRTH', 'DAYS_EMPLOYED',\n",
       "       'DAYS_REGISTRATION', 'DAYS_ID_PUBLISH', 'OWN_CAR_AGE', 'FLAG_MOBIL',\n",
       "       'FLAG_EMP_PHONE', 'FLAG_WORK_PHONE', 'FLAG_CONT_MOBILE',\n",
       "       'FLAG_PHONE', 'FLAG_EMAIL', 'OCCUPATION_TYPE', 'CNT_FAM_MEMBERS',\n",
       "       'REGION_RATING_CLIENT', 'REGION_RATING_CLIENT_W_CITY',\n",
       "       'WEEKDAY_APPR_PROCESS_START', 'HOUR_APPR_PROCESS_START',\n",
       "       'REG_REGION_NOT_LIVE_REGION', 'REG_REGION_NOT_WORK_REGION',\n",
       "       'LIVE_REGION_NOT_WORK_REGION', 'REG_CITY_NOT_LIVE_CITY',\n",
       "       'REG_CITY_NOT_WORK_CITY', 'LIVE_CITY_NOT_WORK_CITY',\n",
       "       'ORGANIZATION_TYPE', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3',\n",
       "       'APARTMENTS_AVG', 'BASEMENTAREA_AVG', 'YEARS_BEGINEXPLUATATION_AVG',\n",
       "       'YEARS_BUILD_AVG', 'COMMONAREA_AVG', 'ELEVATORS_AVG',\n",
       "       'ENTRANCES_AVG', 'FLOORSMAX_AVG', 'FLOORSMIN_AVG', 'LANDAREA_AVG',\n",
       "       'LIVINGAPARTMENTS_AVG', 'LIVINGAREA_AVG', 'NONLIVINGAPARTMENTS_AVG',\n",
       "       'NONLIVINGAREA_AVG', 'APARTMENTS_MODE', 'BASEMENTAREA_MODE',\n",
       "       'YEARS_BEGINEXPLUATATION_MODE', 'YEARS_BUILD_MODE',\n",
       "       'COMMONAREA_MODE', 'ELEVATORS_MODE', 'ENTRANCES_MODE',\n",
       "       'FLOORSMAX_MODE', 'FLOORSMIN_MODE', 'LANDAREA_MODE',\n",
       "       'LIVINGAPARTMENTS_MODE', 'LIVINGAREA_MODE',\n",
       "       'NONLIVINGAPARTMENTS_MODE', 'NONLIVINGAREA_MODE', 'APARTMENTS_MEDI',\n",
       "       'BASEMENTAREA_MEDI', 'YEARS_BEGINEXPLUATATION_MEDI',\n",
       "       'YEARS_BUILD_MEDI', 'COMMONAREA_MEDI', 'ELEVATORS_MEDI',\n",
       "       'ENTRANCES_MEDI', 'FLOORSMAX_MEDI', 'FLOORSMIN_MEDI',\n",
       "       'LANDAREA_MEDI', 'LIVINGAPARTMENTS_MEDI', 'LIVINGAREA_MEDI',\n",
       "       'NONLIVINGAPARTMENTS_MEDI', 'NONLIVINGAREA_MEDI',\n",
       "       'FONDKAPREMONT_MODE', 'HOUSETYPE_MODE', 'TOTALAREA_MODE',\n",
       "       'WALLSMATERIAL_MODE', 'EMERGENCYSTATE_MODE',\n",
       "       'OBS_30_CNT_SOCIAL_CIRCLE', 'DEF_30_CNT_SOCIAL_CIRCLE',\n",
       "       'OBS_60_CNT_SOCIAL_CIRCLE', 'DEF_60_CNT_SOCIAL_CIRCLE',\n",
       "       'DAYS_LAST_PHONE_CHANGE', 'FLAG_DOCUMENT_2', 'FLAG_DOCUMENT_3',\n",
       "       'FLAG_DOCUMENT_4', 'FLAG_DOCUMENT_5', 'FLAG_DOCUMENT_6',\n",
       "       'FLAG_DOCUMENT_7', 'FLAG_DOCUMENT_8', 'FLAG_DOCUMENT_9',\n",
       "       'FLAG_DOCUMENT_10', 'FLAG_DOCUMENT_11', 'FLAG_DOCUMENT_12',\n",
       "       'FLAG_DOCUMENT_13', 'FLAG_DOCUMENT_14', 'FLAG_DOCUMENT_15',\n",
       "       'FLAG_DOCUMENT_16', 'FLAG_DOCUMENT_17', 'FLAG_DOCUMENT_18',\n",
       "       'FLAG_DOCUMENT_19', 'FLAG_DOCUMENT_20', 'FLAG_DOCUMENT_21',\n",
       "       'AMT_REQ_CREDIT_BUREAU_HOUR', 'AMT_REQ_CREDIT_BUREAU_DAY',\n",
       "       'AMT_REQ_CREDIT_BUREAU_WEEK', 'AMT_REQ_CREDIT_BUREAU_MON',\n",
       "       'AMT_REQ_CREDIT_BUREAU_QRT', 'AMT_REQ_CREDIT_BUREAU_YEAR'], dtype=object)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.columns.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TARGET 2\n",
      "NAME_CONTRACT_TYPE 2\n",
      "CODE_GENDER 3\n",
      "FLAG_OWN_CAR 2\n",
      "FLAG_OWN_REALTY 2\n",
      "CNT_CHILDREN 15\n",
      "NAME_TYPE_SUITE 8\n",
      "NAME_INCOME_TYPE 8\n",
      "NAME_EDUCATION_TYPE 5\n",
      "NAME_FAMILY_STATUS 6\n",
      "NAME_HOUSING_TYPE 6\n",
      "FLAG_MOBIL 2\n",
      "FLAG_EMP_PHONE 2\n",
      "FLAG_WORK_PHONE 2\n",
      "FLAG_CONT_MOBILE 2\n",
      "FLAG_PHONE 2\n",
      "FLAG_EMAIL 2\n",
      "OCCUPATION_TYPE 19\n",
      "CNT_FAM_MEMBERS 18\n",
      "REGION_RATING_CLIENT 3\n",
      "REGION_RATING_CLIENT_W_CITY 3\n",
      "WEEKDAY_APPR_PROCESS_START 7\n",
      "HOUR_APPR_PROCESS_START 24\n",
      "REG_REGION_NOT_LIVE_REGION 2\n",
      "REG_REGION_NOT_WORK_REGION 2\n",
      "LIVE_REGION_NOT_WORK_REGION 2\n",
      "REG_CITY_NOT_LIVE_CITY 2\n",
      "REG_CITY_NOT_WORK_CITY 2\n",
      "LIVE_CITY_NOT_WORK_CITY 2\n",
      "ELEVATORS_MODE 27\n",
      "FLOORSMAX_MODE 26\n",
      "FLOORSMIN_MODE 26\n",
      "FONDKAPREMONT_MODE 5\n",
      "HOUSETYPE_MODE 4\n",
      "WALLSMATERIAL_MODE 8\n",
      "EMERGENCYSTATE_MODE 3\n",
      "DEF_30_CNT_SOCIAL_CIRCLE 11\n",
      "DEF_60_CNT_SOCIAL_CIRCLE 10\n",
      "FLAG_DOCUMENT_2 2\n",
      "FLAG_DOCUMENT_3 2\n",
      "FLAG_DOCUMENT_4 2\n",
      "FLAG_DOCUMENT_5 2\n",
      "FLAG_DOCUMENT_6 2\n",
      "FLAG_DOCUMENT_7 2\n",
      "FLAG_DOCUMENT_8 2\n",
      "FLAG_DOCUMENT_9 2\n",
      "FLAG_DOCUMENT_10 2\n",
      "FLAG_DOCUMENT_11 2\n",
      "FLAG_DOCUMENT_12 2\n",
      "FLAG_DOCUMENT_13 2\n",
      "FLAG_DOCUMENT_14 2\n",
      "FLAG_DOCUMENT_15 2\n",
      "FLAG_DOCUMENT_16 2\n",
      "FLAG_DOCUMENT_17 2\n",
      "FLAG_DOCUMENT_18 2\n",
      "FLAG_DOCUMENT_19 2\n",
      "FLAG_DOCUMENT_20 2\n",
      "FLAG_DOCUMENT_21 2\n",
      "AMT_REQ_CREDIT_BUREAU_HOUR 6\n",
      "AMT_REQ_CREDIT_BUREAU_DAY 10\n",
      "AMT_REQ_CREDIT_BUREAU_WEEK 10\n",
      "AMT_REQ_CREDIT_BUREAU_MON 25\n",
      "AMT_REQ_CREDIT_BUREAU_QRT 12\n",
      "AMT_REQ_CREDIT_BUREAU_YEAR 26\n"
     ]
    }
   ],
   "source": [
    "for feature in get_categorical_features(train_df):\n",
    "    if len(train_df[feature].unique()) <= 30:\n",
    "        print(feature, len(train_df[feature].unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import charts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ns9nuAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "charts.pca_chart_scatter(train_df, 'success', 4000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nhmGEyv8FT4u0oIHfINoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "charts.pca_chart_scatter(train_df[train_df.success == 0], 'TARGET', 4000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'n' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-26-29cb029d9f13>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     11\u001b[0m \u001b[0mkernal_pca\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mKernelPCA\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_components\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkernel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'rbf'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdegree\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mX_train_kpca\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkernal_pca\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     14\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'n' is not defined"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "from bokeh.plotting import figure, show, output_file\n",
    "\n",
    "def get_coordinates(X_train_kpca, y_train, target):\n",
    "    mask_class = (y_train[:n] == target).values\n",
    "    return X_train_kpca[mask_class, 0], X_train_kpca[mask_class, 1]\n",
    "\n",
    "X_train, y_train = train_df, train_df['TARGET']\n",
    "\n",
    "kernal_pca = KernelPCA(n_components=2, kernel='rbf', degree=4, random_state=0)\n",
    "X_train_kpca = kernal_pca.fit_transform(X_train.iloc[:n])\n",
    "\n",
    "\n",
    "n = 4000\n",
    "radii = np.random.random(size=N) * 1.5\n",
    "TOOLS=\"hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,tap,save,box_select,poly_select,lasso_select,\"\n",
    "\n",
    "p = figure(tools=TOOLS)\n",
    "\n",
    "x, y = get_coordinates(X_train_kpca, y_train, 0)\n",
    "p.scatter(x, y, radius=radii, fill_color='red', fill_alpha=0.4, line_color=None)\n",
    "\n",
    "x, y = get_coordinates(X_train_kpca, y_train, 1)\n",
    "p.scatter(x, y, radius=radii, fill_color='blue', fill_alpha=0.4, line_color=None)\n",
    "\n",
    "show(p)  # open a browser"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
